/*================================================================================
* CopyRight(c)2008, www.k-zone.cn. All rights reserved.
* Code licensed under the BSD License
* Author: Kenshin, Email: fxblog@gmail.com, Blog: http://www.k-zone.cn/zblog/
* Version：v0.1
* Data：2008-2-1
*===============================================================================*/
package com.ken.fanfou.as3.user
{
	import com.ken.fanfou.as3.FanFouEvent;
	import com.ken.fanfou.as3.FanFouMethod;
	import com.ken.fanfou.as3.Common;
	import com.ken.fanfou.as3.Type;
	
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	
	public class Followers extends FanFouMethod
	{
		public function Followers(value:String,isValidate:Boolean){
			super();
			_url = value;
			_isValidate = isValidate;
		}
		/** 
		* 重写FanFouMethod，使其具有详细方法，而方法是针对与followers.xml而写。
		* 显示这个用户的关注者
		* _isValidate = true时，需要身份验证，因此不需要使用ID
		* _isValidate = false时，不需要身份验证，因此需要使用ID，例如Common.ID = Kenshin.L
		* 此方法不需要count，因此当_isValidate = false时，直接使用_url即可
		* 
		* @param 饭否默认显示的xml条数、默认是20条（这个参数在本方法中无用）
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function Loader(count:int = 20):void{
			if(!_isValidate) _url += Type.FANFOU_ID + Common.UID;
			var request:URLRequest = new URLRequest(_url);
			var loader:URLLoader = new URLLoader();
			loader.load(request);
			loader.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);
			loader.addEventListener(Event.COMPLETE,completeHandler);
		}
		
		/** 
		* 私有方法，如果urlloader出错，则执行这个方法
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		private function errorHandler(event:IOErrorEvent):void{
			trace(111111)
		}

		/** 
		* 私有方法，如果读取正确出错，则执行这个方法。并且dispatchEvent一个事件，已被客户端监听。
		* 其中_xml是它的父类FanFouMethod的方法。 
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		private function completeHandler(event:Event):void{
			_xml = new XML(event.target.data);
			dispatchEvent(new FanFouEvent(FanFouEvent.COMPLETE));
		}
		
		/** 
		* 重写GetXml，将得到的内容→xml中
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function GetXml():XML{
			return _xml;
		}

		/**------------------------------------ followers.xml的属性 ------------------------------------*/
		/** 
		* followers返回的XML数组：<users>的长度
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function get XmlLength():uint{
			return _xml.user.length();
		}

		/** 
		* followers返回的XML数组：users中的内容
		* 包括：screen_name、id、name、location、description、profile_image_url、url
		* 
		* @return Array
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		* 返回的XML、例如：
    	* <users>
    	*   <user>
    	*     <screen_name>Kenshin</screen_name>
    	*     <id>flex2</id>
    	*     <name>Kenshin</name>
    	*     <location>辽宁 大连</location>
    	*     <description>喜欢Flex、AIR、Java、.Net、Web Design</description>
    	*     <profile_image_url>http://avatar.fanfou.com/s0/00/51/vm.jpg?1189517309</profile_image_url>
    	*     <url>http://fanfou.com/flex2</url>
    	*     <protected>false</protected>
    	*   </user>
    	* </users>
		*/
		public override function get XmlContent():Array{
			for(var i:uint = 0;i < _xml.user.length();i++ ){
				_array.push({screen_name:_xml.user[i].screen_name,
				             id:_xml.user[i].id,
				             name:_xml.user[i].name,
				             location:_xml.user[i].location,
				             description:_xml.user[i].description,
				             profile_image_url:_xml.user[i].profile_image_url,
				             url:_xml.user[i].url
				             });
			}
			return _array;
		}
	}
}